package com.woniu.order.service;

import com.alipay.api.AlipayApiException;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.woniu.order.model.TOrder;
import com.woniu.order.param.*;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 吴彦祖
 * @since 2024年05月23日
 */
public interface TOrderService extends IService<TOrder> {

    /**
     * 新增预约上门收废品
     * @param userId 登录id
     * @param toBean 新增预约对象
     * @return
     */
    TOrder insetOrder(Integer  userId,AddBookingOrderParam toBean);
//    /**
//     * 上传图片
//     */
//    void updateImage(UploadImageParam param);
//    /**
//     * 站点分配员工
//     * @param toBean 订单编号 员工id
//     * @return 返回订单
//     */
    TOrder assignmentEmployee(AssignmentEmployeeParam toBean);
    /**
     * 员工出发
     * @param orderNum 订单编号
     * @param userId 员工id
     * @return
     */
    TOrder employeeGo(String orderNum, Integer userId);

    /**
     * 用户确认订单
     * @param userId 用户id
     * @param orderNum 订单编号
     * @return
     */
    TOrder userQueryOrder(Integer userId,String orderNum);
    /**
     * 用户取消订单
     * @param userId 用户id
    * @param orderNum 订单编号
     * @return
     */
    TOrder cancelOrder(Integer userId,Integer accountId, String orderNum);
    /**
     * 用户拒绝订单
     * @param userId 用户id
     * @param orderNum 订单编号
     * @return
     */
    TOrder refuseOrder(Integer userId, String orderNum);
    /**
     * 站点通过
     * @param orderNum 订单编号
     * @param userId 站长id
     * @return
     */
    TOrder siteQuery(Integer userId, String orderNum);
    /**
     * 站点拒绝通过
     * @param orderNum 订单编号
     * @param userId 站长id
     * @return
     */
    TOrder refuseQuery(Integer userId, String orderNum);
    /**
     *员工返程
     * @param orderNum 订单编号
     * @param userId 员工id
     * @return
     */
    TOrder employeeBack(Integer userId, String orderNum);
    /**
     * 根据状态分页查询员工订单
     * @param toBean 状态码 页码 每页个数
     * @param userId 员工token
     * @return 订单page对象
     */
    Page<TOrder> findStateOrder(Integer userId, FindStateOrderParam toBean);

    /**
     * 根据站点id查询该站点所属所有订单
     * id 站点id
     */
    Page<TOrder> findByStationId(Integer id,Integer pageNum,Integer pageSize);

    /**
     * 根据站点id查询该站点所有待站点审批订单
     * id 站点id
     */
    Page<TOrder> findUnHandelByStationId(Integer id,Integer pageNum,Integer pageSize);

    /**
     * 根据站点id查询该站点所有待分配员工订单
     * id 站点id
     */
    Page<TOrder> findUnAssByStationId(Integer id, Integer pageNum, Integer pageSize);

    /**
     * 新增预约上门收废品返回的押金form为空
     * @param toBean 新增预约对象
     * @return
     */
    TOrder insetOrders(Integer userId, AddBookingOrdersparam toBean);
    /**
     * 商家转账测试
     * @param orderNum 订单编号
     * @param userId 用户id
     * @return
     */
    TOrder translationPay(Integer userId, String orderNum) throws Exception;


    /**
     * 根据账号id返回订单集合
     * @param id 账号id
     * @return
     */
    List<TOrder> findOrderByAccountId(Integer id);
}
